package Tipos;


/**
 * Class PalReser representa las palabras reservadas del lenguaje,
 * imita a un enumerado de C.
 * 
 * @author Martín Montalvo Martínez
 */
public class PalReser{
    
/*Hay que actualizar*/
    public static enum palClave{
        AND,ARRAY,BEGIN,BOOLEAN,CASE,CHAR,CONST,DIV,DO,DOWNTO,ELSE,//10
        END,FALSE,FILE,FOR,FUNCTION,GOTO,IF,//7
        IN,INTEGER,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,READ,READLN,RECORD,//14
        REPEAT,SET,SHL,SHR,STRING,THEN,TO,TRUE,TYPE,UNIT,UNTIL,USES,VAR,WHILE,WITH,WRITE,WRITELN,XOR}//18
    
    private palClave tipo;
    
    public PalReser(){
   
    }
    
    public PalReser(palClave palabra){
        tipo=palabra;
    }
    /**Intenta crear una Palabra reservada proporcionandole la palabra
     * en un String.
     * Para comprobar si es una palabra reservada ignora las sensibilidad a
     * mayusculas, es decir, no tiene en cuenta si está en mayuscualas o minúscualas,
     * en caso de que el String que se le pasa no coincida con ninguna palabra reservada
     * se crea por defecto la palabra reservada and
     */
    public PalReser(String tipoPal){
        try{
            tipo=palClave.valueOf(tipoPal.toUpperCase());
        }
        catch(IllegalArgumentException a){
            tipo=palClave.valueOf("AND");
        }
    }
    
    /**
     * Esta función indica si el String palabra es un componente de
     * PalReser, sin tener encuenta las mayusculas
     */
    public static boolean esta(String palabra){
        palClave[] aux=palClave.values();
        for(int i=0;i < aux.length;i++){
            if(aux[i].toString().compareToIgnoreCase(palabra)==0)
                return true;
        }
        return false;
    }
    
    /**
     *Devuelve el valor del enumerado de la palabra clave
     */
    public palClave devolver(){
        palClave aux=palClave.FOR;
        aux=tipo;
        return aux;
    }
    
    public String getTipo(){
        return tipo.toString();
    }

    public static void main(String args[]){
        /*PalReser aux=new PalReser();
        String a;
        if(esta("ANd"))
            System.out.println("Esta");
        else
            System.out.println("No esta");*/
        
        PalReser aux=new PalReser(palClave.AND);
        System.out.println(aux.getTipo().toString());
        //String auxi=(String)tipos22.adios.toString();
        //System.out.println(auxi);
    }

}